export function daysUntilDate(targetDate) {
	const today = new Date();
	const target = new Date(targetDate.replace(/-/g, '/'));
	const timeDiff = target.getTime() - today.getTime();
	const daysDiff = Math.ceil(timeDiff / (1000 * 3600 * 24));
	return daysDiff;
}

export function getPastDays(targetDateStr) {
	const target = new Date(targetDateStr.replace(/-/g, '/'));
	const targetDate = new Date(target);
	const currentDate = new Date();
	const millisecondsPerDay = 1000 * 60 * 60 * 24;
	const pastDays = (currentDate - targetDate) / millisecondsPerDay;
	return Math.round(pastDays);
}


export function getDate(targetDate, n) {
	let date1 = new Date(targetDate.replace(/-/g, '/')),
		time1 = date1.getFullYear() + "/" + (date1.getMonth() + 1) + "/" + date1.getDate(); //time1表示当前时间
	let date2 = new Date(date1);
	date2.setDate(date1.getDate() + n);
	let time2 = date2.getFullYear() + "/" + ("0" + (date2.getMonth() + 1)).slice(-2) + "/" + ("0" + date2.getDate())
		.slice(-2);
	return time2
}

export function timeIncludes(businessTime) {
	const [starTime, endTime] = businessTime.split('-')
	const starArr = starTime.split(':')
	const endArr = endTime.split(':')
	let now = new Date();
	let start = new Date();
	start.setHours(starArr[0]);
	start.setMinutes(starArr[1]);
	let end = new Date();
	end.setHours(endArr[0]);
	end.setMinutes(endArr[1]);

	if (now.getTime() >= start.getTime() && now.getTime() <= end.getTime()) {
		return true
	} else {
		return false
	}
}

export function calcDescartes(array) {
	if (array.length < 2) return array[0] || [];
	return [].reduce.call(array, function(col, set) {
		var res = [];
		col.forEach(function(c) {
			set.forEach(function(s) {
				var t = [].concat(Array.isArray(c) ? c : [c]);
				t.push(s);
				res.push(t);
			})
		});
		return res;
	});
}

export function convert_to_array(num, arr) {
	return Array.from({
			length: Math.ceil(arr.length / num)
		}, (_, i) =>
		arr.slice(i * num, i * num + num).concat(Array(num - arr.length % num).fill(null))
	);
}

/**
 * @description 金额转大写
 * @param amount
 * @returns
 */
export function getCapital(amount) {
	// 汉字的数字
	const cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
	// 基本单位
	const cnIntRadice = ['', '拾', '佰', '仟']
	// 对应整数部分扩展单位
	const cnIntUnits = ['', '万', '亿', '兆']
	// 对应小数部分单位
	const cnDecUnits = ['角', '分']
	// 整数金额时后面跟的字符
	const cnInteger = ''
	// 整型完以后的单位
	const cnIntLast = '元'
	// 最大处理的数字
	const maxNum = 9999999999999998
	// 金额整数部分
	let integerNum
	// 金额小数部分
	let decimalNum
	// 输出的中文金额字符串
	let chineseStr = ''
	// 分离金额后用的数组，预定义
	let parts
	if (amount === '') {
		return ''
	}
	amount = parseFloat(amount)
	if (amount >= maxNum) {
		// 超出最大处理数字
		return ''
	}
	if (amount === 0) {
		chineseStr = cnNums[0] + cnIntLast + cnInteger
		return chineseStr
	}
	// 转换为字符串
	amount = amount.toString()
	if (amount.indexOf('.') === -1) {
		integerNum = amount

		decimalNum = ''
	} else {
		parts = amount.split('.')
		integerNum = parts[0]
		decimalNum = parts[1].substr(0, 4)
	}
	// 获取整型部分转换
	if (parseInt(integerNum, 10) > 0) {
		let zeroCount = 0
		const IntLen = integerNum.length
		for (let i = 0; i < IntLen; i++) {
			const n = integerNum.substr(i, 1)
			const p = IntLen - i - 1
			const q = p / 4
			const m = p % 4
			if (n === '0') {
				zeroCount++
			} else {
				if (zeroCount > 0) {
					chineseStr += cnNums[0]
				}
				// 归零
				zeroCount = 0
				//alert(cnNums[parseInt(n)])
				chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]
			}
			if (m === 0 && zeroCount < 4) {
				chineseStr += cnIntUnits[q]
			}
		}
		chineseStr += cnIntLast
	}
	// 小数部分
	if (decimalNum !== '') {
		const decLen = decimalNum.length
		for (let i = 0; i < decLen; i++) {
			const n = decimalNum.substr(i, 1)
			if (n !== '0') {
				chineseStr += cnNums[Number(n)] + cnDecUnits[i]
			}
		}
	}
	if (chineseStr === '') {
		chineseStr += cnNums[0] + cnIntLast + cnInteger
	} else if (decimalNum === '') {
		chineseStr += cnInteger
	}
	return chineseStr
}